package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.IHasServiceRecords;
import com.shrct.businessprocess.customerservice.RCNonProjectServiceInnerStatus;
import com.shrct.businessprocess.customerservice.RCNonProjectServiceStatus;
import com.shrct.businessprocess.customerservice.RCServiceRecord;
import com.shrct.businessprocess.customerservice.impl.RCNonProjectServiceImpl;
import com.shrct.businessprocess.customerservice.proxy.RCNonProjectServiceProxy;
import com.shrct.businessprocess.organization.RCEmployee;
import com.shrct.businessprocess.product.RCBrand;
import com.shrct.businessprocess.product.RCProductType;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCNonProjectServiceImpl.class)
public interface RCNonProjectService extends IModelObject, IHasServiceRecords {
  public abstract Date getApplyDate();
  
  public abstract RCNonProjectService setApplyDate(final Date applyDate);
  
  public abstract String getCustomerName();
  
  public abstract RCNonProjectService setCustomerName(final String customerName);
  
  public abstract String getCustomerLinkPerson();
  
  public abstract RCNonProjectService setCustomerLinkPerson(final String customerLinkPerson);
  
  public abstract String getCustomerLinkMail();
  
  public abstract RCNonProjectService setCustomerLinkMail(final String customerLinkMail);
  
  public abstract String getCustomerLinkPhone();
  
  public abstract RCNonProjectService setCustomerLinkPhone(final String customerLinkPhone);
  
  public abstract String getCustomerLinkAddress();
  
  public abstract RCNonProjectService setCustomerLinkAddress(final String customerLinkAddress);
  
  public abstract Double getServiceDays();
  
  public abstract RCNonProjectService setServiceDays(final Double serviceDays);
  
  public abstract Integer getServiceWorkers();
  
  public abstract RCNonProjectService setServiceWorkers(final Integer serviceWorkers);
  
  public abstract Collection<RCBrand> getStdDeviceSupplier();
  
  public abstract RCNonProjectService addtoStdDeviceSupplier(final RCBrand rCBrand);
  
  public abstract RCNonProjectService setStdDeviceSupplier(final Iterable<RCBrand> stdDeviceSupplier);
  
  public abstract RCNonProjectService removeFromStdDeviceSupplier(final RCBrand rCBrand);
  
  public abstract RCNonProjectService removeAllStdDeviceSupplier();
  
  public abstract String getDeviceSupplier();
  
  public abstract RCNonProjectService setDeviceSupplier(final String deviceSupplier);
  
  public abstract Collection<RCProductType> getStdDeviceType();
  
  public abstract RCNonProjectService addtoStdDeviceType(final RCProductType rCProductType);
  
  public abstract RCNonProjectService setStdDeviceType(final Iterable<RCProductType> stdDeviceType);
  
  public abstract RCNonProjectService removeFromStdDeviceType(final RCProductType rCProductType);
  
  public abstract RCNonProjectService removeAllStdDeviceType();
  
  public abstract String getDeviceType();
  
  public abstract RCNonProjectService setDeviceType(final String deviceType);
  
  public abstract RCEmployee getSales();
  
  public abstract RCNonProjectService setSales(final RCEmployee sales);
  
  public abstract Collection<RCServiceRecord> getServiceRecords();
  
  public abstract RCNonProjectService addtoServiceRecords(final RCServiceRecord rCServiceRecord);
  
  public abstract RCNonProjectService setServiceRecords(final Iterable<RCServiceRecord> serviceRecords);
  
  public abstract RCNonProjectService removeFromServiceRecords(final RCServiceRecord rCServiceRecord);
  
  public abstract RCNonProjectService removeAllServiceRecords();
  
  public abstract Date getFinishDate();
  
  public abstract RCNonProjectService setFinishDate(final Date finishDate);
  
  public abstract Collection<RCEmployee> getWorkers();
  
  public abstract RCNonProjectService addtoWorkers(final RCEmployee rCEmployee);
  
  public abstract RCNonProjectService setWorkers(final Iterable<RCEmployee> workers);
  
  public abstract RCNonProjectService removeFromWorkers(final RCEmployee rCEmployee);
  
  public abstract RCNonProjectService removeAllWorkers();
  
  public abstract String getFinishComment();
  
  public abstract RCNonProjectService setFinishComment(final String finishComment);
  
  public abstract RCNonProjectServiceStatus getStatus();
  
  public abstract RCNonProjectService setStatus(final RCNonProjectServiceStatus status);
  
  public abstract void doAddtoServiceRecords(final RCServiceRecord serviceRecord);
  
  public abstract RCNonProjectServiceInnerStatus getInnerStatus();
  
  public abstract void start();
  
  public abstract void finish(final Date finishDate, final Collection<RCEmployee> workers, final String finishComment);
  
  public abstract void cancel();
  
  public abstract void delete();
  
  public abstract void update(final Procedure1<? super RCNonProjectService> updator);
  
  public abstract void notifyManager();
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isFinished();
  
  public abstract Boolean isNotified();
  
  public abstract Boolean isCanceled();
  
  public abstract RCNonProjectServiceProxy toProxy();
}
